#!/usr/bin/env python
# -*- coding: UTF-8 -*-
"""
@Project : bigDataProject 
@File    : log_control.py
@IDE     : PyCharm 
@Author  : Mario
@Date    : 2022/11/10 11:11 
@Describe: 日志处理
"""
import os
import sys
from typing import Text

from loguru import logger

from config.setting import root_path
from config.yaml_file_read import log_cfg

# 定义日志存放路径与输入等级
_baseHome = root_path()
_log_path = log_cfg['log_path']  # 日志存放基础目录
_log_file = os.path.join(_baseHome, _log_path, 'log.log')
_log_level = log_cfg['log_level']  # 日志等级


class LogHandler:
    def __init__(self, log_file_path: Text = _log_file) -> None:
        self.logger = logger
        # 清空所有设置
        self.logger.remove()
        # 添加控制台输出的格式,sys.stdout为输出到屏幕;关于这些配置还需要自定义请移步官网查看相关参数说明
        self.logger.add(sys.stdout,
                        level='DEBUG',
                        format="<green>{time:YYYY-MM-DD HH:mm:ss}</green> - "  # 颜色>时间
                               "{process.name} - "  # 进程名
                               "{thread.name} - "  # 进程名
                               "<cyan>{module}</cyan>.<cyan>{function}</cyan>"  # 模块名.方法名
                               ":<cyan>{line}</cyan> - "  # 行号
                               "<level>{level}</level> -> "  # 等级
                               "<level>{message}</level>",  # 日志内容
                        )
        # 输出到文件的格式,注释下面的add',则关闭日志写入
        self.logger.add(log_file_path,
                        level=_log_level,
                        format='{time:YYYY-MM-DD HH:mm:ss} - '  # 时间
                               "{process.name} - "  # 进程名
                               "{thread.name} - "  # 进程名
                               '{module}.{function}:{line} - {level} -> {message}',  # 模块名.方法名:行号
                        rotation="1 days",
                        compression="zip",
                        enqueue=True,
                        backtrace=True,
                        diagnose=True
                        )

    def get_logger(self) -> logger:
        return self.logger


if __name__ == '__main__':
    my_logger = LogHandler().get_logger()
    my_logger.info('测试打印日志')
    my_logger.error('测试打印日志')
    my_logger.warning('测试打印日志')
